package com.battle.pojo.param.exam;

import jakarta.persistence.Column;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;

import java.math.BigDecimal;
import java.sql.Timestamp;
import java.time.*;
import java.util.List;


/**
* 【描 述】：
* 【环 境】：J2SE 17
* 【详 细】：
*
*/
@Data
public class CreateExamParam {


    /**
     * 考核标题
     */
    @Column()
    private String name;

    /**
     * 是否永久
     */
    @Column()
    private Boolean isPermanent;

    /**
     * 考核开始时间
     */
    @Column()
    private LocalDateTime startTime;

    /**
     * 考核结束时间
     */
    @Column()
    private LocalDateTime endTime;

    /**
     * 状态：0未发布 1待开始 2考核中 3已完成
     */
    @Column()
    private Integer status;

    /**
     * 考核时长（分钟）
     */
    @Column()
    private Integer duration;

    /**
     * 补考次数
     */
    @Column()
    private Integer retestCount;

    /**
     * 总分数
     */
    @Column()
    private BigDecimal totalScore;

    /**
     * 平均分数=总分数/总题目数量
     */
    @Column()
    private BigDecimal averageScore;

    /**
     * 及格分数
     */
    @Column()
    private BigDecimal passScore;

    /**
     * 总题目数量
     */
    @Column()
    private Integer totalQuestionCount;

    /**
     * 单选题数量
     */
    @Column()
    private Integer singleChoiceCount;

    /**
     * 多选题数量
     */
    @Column()
    private Integer multipleChoiceCount;

    /**
     * 判断题数量
     */
    @Column()
    private Integer judgeCount;

    /**
     * 考核范围ids集合
     */
    @Column()
    @NotEmpty
    private List<Long> examScopeIds;

    /**
     * 考核题库ids集合
     */
    @Column()
    @NotEmpty
    private List<Long> questionBankIds;

    /**
     * 是否是随机题目
     */
    @Column()
    private Boolean isRandomQuestion;

    /**
     * 随机题目的json
     */
    @Column()
    private List<CreateRandomQuestionParam> randomQuestionJson;

    /**
     * 指定题目的json
     */
    @Column()
    private List<CreateAppointQuestionParam> appointQuestionJson;

}